/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controle;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import sc.utilidades.banco.BancoFirebird;

public class Aluno {
  
    int id;
    String nome;
    int cpf;
    Date dt_nasc; 
    Date dt_inclusao;
    boolean inativo;
    String gr_sanguineo;
    boolean ativ_fisica;
    char sexo;

    public Aluno() {
   
        
    }

    public Aluno(String nome, int cpf, Date dt_nasc, Date dt_inclusao, boolean inativo, String gr_sanguineo, boolean ativ_fisica, char sexo) {
        this.nome = nome;
        this.cpf = cpf;
        this.dt_nasc = dt_nasc;
        this.dt_inclusao = dt_inclusao;
        this.inativo = inativo;
        this.gr_sanguineo = gr_sanguineo;
        this.ativ_fisica = ativ_fisica;
        this.sexo = sexo;
    }
    
    
    
    // ADICIONAR   
    public boolean adicionarAluno(){
        BancoFirebird bd = new BancoFirebird();
        
        if(bd.execute(insertString())){
            return true;
        }
        
        return false;
    }

    // DELETAR
    public boolean deletarAluno(int id){
        BancoFirebird bd = new BancoFirebird();
        
        if(bd.execute(deleteString(id))){
            return true;
        }
        
        return false;
    
    
    }
    
    // MODIFICAR
    public boolean modificarAluno(String campo, String valor, int id){
        BancoFirebird bd = new BancoFirebird();
        
        if(bd.execute(updateString(campo, valor, id))){
            return true;
        }
        
        return false;
    }
    
    // LISTAR
    public static ResultSet listarAluno(){
        ResultSet result;
        BancoFirebird bd = new BancoFirebird();
        String select = "SELECT * FROM ALUNO";
        result = bd.selectDado(select);
        
        return result;
        
    }
    
    public static ResultSet listarAluno(int id){
        ResultSet result;
        BancoFirebird bd = new BancoFirebird();
        
        result = bd.selectDado("ALUNO", id);
        
        return result;
        
    }
    
    
    
    // UTILITÁRIOS    
     public String insertString(){
         String insert = "INSERT INTO ALUNO(NOME, CPF, DT_NASC, DT_INCLUSAO, "+
                "INATIVO, GR_SANGUINEO, ATIV_FISICA, SEXO) VALUES(";
         
         if(nome==null){
             insert+="NULL"+",";
         }else{
             insert+="'"+nome+"'"+",";
         }
         
         if(cpf==0){
             insert+="NULL"+",";
         }else{
             insert+=cpf+",";
         }
         
         if(dt_nasc==null){
             insert+="NULL"+",";
         }else{
             insert+=BancoFirebird.converterDateParaDataBanco(dt_nasc)+",";
         }
         
         if(dt_inclusao==null){
             insert+="NULL"+",";
         }else{
             insert+=BancoFirebird.converterDateParaDataBanco(dt_inclusao)+",";
         }
         
         if(inativo){
            insert+="'S'"+",";
         }else{
             insert+="'N'"+",";
         }
         
         if(gr_sanguineo==null){
             insert+="NULL"+",";
         }else{
             insert+="'"+gr_sanguineo+"'"+",";
         }
         
         if(ativ_fisica){
            insert+="'S'"+",";
         }else{
             insert+="'N'"+",";
         }
         
         if(Character.isLetter(sexo)){
             insert+="'"+sexo+"'";
         }else{
             insert+="NULL";
         }
         
         insert+=")";
         
         
         return insert;
     }
    
    public String deleteString(int id){
        String delete="DELETE FROM ALUNO WHERE ID="+id;
        
        return delete;
    
    }
     
    public String updateString(String campo, String valor, int id){
        String update="UPDATE ALUNO SET "+campo+"="+valor+" WHERE ID="+id;
        
        return update;
    
    }    
    
    public static Aluno obterAlunoDeResultSet(ResultSet result){
        if(result == null){
            System.out.println("RESULTSET NULO");
            return null;
        }
        
        Aluno aluno = new Aluno();
        try {
                aluno.nome=result.getString("NOME");
                aluno.id=Integer.parseInt(result.getString("ID"));
                //System.out.println("CPF --> "+result.getString("CPF"));
                if(result.getString("CPF")==null){
                    aluno.cpf=0;
                }else{
                    aluno.cpf=Integer.parseInt(result.getString("CPF"));
                }
                if(result.getString("ATIV_FISICA").equals("S")){
                    aluno.ativ_fisica=true;
                }else{
                    aluno.ativ_fisica=false;
                }
                
                if(result.getString("DT_NASC").equals("null") || result.getString("DT_NASC").equals("")){
                    aluno.dt_nasc=null;
                }else{
                    aluno.dt_nasc=BancoFirebird.converterDataBancoParaDate(result.getString("DT_NASC"));
                }
                
                if(result.getString("DT_INCLUSAO")==null|| result.getString("DT_INCLUSAO").equals("")){
                    aluno.dt_inclusao=null;
                }else{
                    aluno.dt_inclusao=BancoFirebird.converterDataBancoParaDate(result.getString("DT_NASC"));
                }
                                
                if(result.getString("GR_SANGUINEO")==null){
                    aluno.gr_sanguineo="NULL";
                }else{
                    aluno.gr_sanguineo=result.getString("GR_SANGUINEO");
                }
                
                if(result.getString("INATIVO").equals("S")){
                    aluno.inativo=true;
                }else{
                    aluno.inativo=false;
                }
                 
                if(result.getString("SEXO")==null){
                    aluno.sexo='?';
                }else{
                    aluno.sexo=result.getString("SEXO").charAt(0);
                } 
            
            
        } catch (SQLException ex) {
            Logger.getLogger(Aluno.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        
        }
        
        return aluno;   
    }
     
    public String[] obterStringArrayDeDados(String[] campos){
        int tamanho = campos.length;
        String[] dados = new String[tamanho];
    
        int contador=0;
        for(String str:campos){
            System.out.println(str);
            dados[contador]=obterDado(campos[contador]);
            contador++;
        }
        
        
        return dados;

    }
    
    public String obterDado(String campo){
        if(campo==null){
            return "NULL";
        }
        String dado = null;
        if(campo.equals("nome")){
            dado=this.nome;
        }else if(campo.equals("dt_nasc")){
            dado=BancoFirebird.converterDateParaDataPT_BR(this.dt_nasc);
        }else if(campo.equals("dt_inclusao")){
            dado=BancoFirebird.converterDateParaDataPT_BR(this.dt_inclusao);
        }else if(campo.equals("inativo")){
            if(this.inativo){
                dado="S";
            }else{
                dado="N";
            }
        }
        System.out.println("obterdado()>>> "+dado);
        return dado;
    }
    
}
